Dynamic Stamp Texture for Digital Paintbrush

ABSTRACT

In implementations of dynamic texture for a digital paintbrush one or more computing devices implement a digital paintbrush module to receive a stroke property of a stroke from an input device. The digital paintbrush module determines a weight to apply to a texture image channel that represents an attribute of the digital paintbrush. A magnitude of the weight defines a significance of the attribute relative to another attribute of the digital paintbrush which is represented by another texture image channel. A texture stamp of the digital paintbrush is generated by combining the texture image channel with the other texture image channel. The texture stamp is used to render the stroke of the paintbrush in a user interface of a display device based on the received stroke property.

BACKGROUND

Digital painting is a type of content creation that simulatesconventional painting by rendering strokes of a virtual paintbrush in auser interface displayed by a display device. In some conventionaldigital painting systems, a computing device receives an inputdescribing a stroke path of an input device, and the computing devicerenders a digital paintbrush stroke by applying a stamp texture alongthe stroke path. The stamp texture generally represents a property ofphysical painting, e.g., bristles of a physical paintbrush, and thusapplication of the stamp texture generates a digital paintbrush strokeintended to simulate a physical paintbrush stroke.

However, rendering digital paintbrush strokes using this conventionalapproach often oversimplifies physical painting and thus fails toreflect variables such as stroke pressure, stroke direction, paintbrushorientation, and interaction of bristles with a paint substrate such asa canvas. Conventional techniques also fail to reflect changes in thesevariables and are limited to rendering digital paintbrush strokes usinga static stamp texture pattern. Although some systems allow for optional“jittering” which randomly rotates and/or resizes the stamp texturealong the stroke path, these conventional systems do not change thestamp texture pattern. Specifically, conventional techniques do notchange or modify the stamp texture pattern when rendering optional“jittering” because this feature rotates the stamp texture patternand/or resizes the stamp texture pattern, but the stamp texture patternremains static and unchanged. As a result of these shortcomings, digitalpaintbrush strokes rendered using this conventional approach oftenappear unrealistic.

Another conventional approach to digital painting simulates individualbristles of a physical paintbrush such that each of the simulatedbristles interacts with virtual paint and a virtual canvas. A computingdevice can use information from this three-dimensional simulation torender digital paintbrush strokes. Although individual bristlesimulation can reflect more variables than the conventional stamptexture rendering approach, this type of simulation is computationallyexpensive to the extent that it is not viable for most computingdevices.

Even when used on computing devices with sufficient resources to supportthree-dimensional modeling, the individual bristle simulation systemsoverwhelm computational capabilities in many common use scenarios suchas fast paintbrush strokes. Thus, these conventional systems often placea limit on paintbrush stroke speed which is frustrating to users. Otherdisadvantages of three-dimensional modeling approaches include problemswith consistency and repeatability. For example, a user may observe thata particular manipulation of an input device caused a digital stroke tobe rendered with a desirable feature; however, the user is often unableto reproduce the desirable feature even when repeatedly performing thesame particular manipulation of the input device. In another example,the user may observe that a certain combination of input devicemanipulations and system settings produces a desirable result in onecontent project, but the same certain combination of input devicemanipulations and system settings does not produce the desirable resultin another similar content project.

SUMMARY

Systems and techniques are described for a dynamic stamp texture for adigital paintbrush. A computing device implements a digital paintbrushsystem which receives input data that describes a stroke property of astroke of a digital paintbrush. The digital paintbrush system determinesa weight to apply to a texture image channel based on the strokeproperty of the stroke. The texture image channel represents anattribute of the digital paintbrush and a magnitude of the weightdefines a relative significance of the attribute based on the receivedstroke property. The digital paintbrush system applies the weight to thetexture stamp channel and generates a texture stamp of the digitalpaintbrush by combining the texture stamp channel with another texturestamp channel which represents another attribute of the digitalpaintbrush. The digital paintbrush system uses the generated texturestamp to render the stroke in a user interface of a display device.

In the techniques described herein, the texture stamp is dynamicallyadjusted by adjusting the magnitude of the weight applied to the textureimage channel in response to receiving input data describing a change tothe stroke property or describing another stroke property of the strokeof the digital paintbrush. For example, the digital paintbrush systemchanges a pattern of the texture stamp used to render digital paintstrokes in real-time based on input data describing changes in strokepressure, direction, velocity, contact angle, etc. Thus, the digitalpaintbrush system renders the stroke in the user interface dynamicallyin response to the received input data to realistically simulate aphysical paintbrush stroke.

In this way, the digital paintbrush system provides paint simulationfunctionality without the computational cost of three-dimensionalpaintbrush simulation, enabling the digital paintbrush system to be usedto provide paint simulation functionality on low-resource computingdevices such as mobile devices. The described systems and techniquesimprove digital painting technology by changing the texture stamp basedon received input data in real-time, and using the dynamic texture stampto render strokes of digital paint. Thus, the digital paintbrush systemimproves digital painting technology by rendering realistic digitalpaint strokes consistently and without limits on user inputs such asstroke speed.

This Summary introduces a selection of concepts in a simplified formthat are further described below in the Detailed Description. As such,this Summary is not intended to identify essential features of theclaimed subject matter, nor is it intended to be used as an aid indetermining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanyingfigures. Entities represented in the figures may be indicative of one ormore entities and thus reference may be made interchangeably to singleor plural forms of the entities in the discussion.

FIG. 1 is an illustration of an environment in an example implementationthat is operable to employ digital systems and techniques as describedherein.

FIG. 2 depicts a system in an example implementation showing operationof a digital paintbrush module.

FIG. 3 is a flow diagram depicting a procedure in an exampleimplementation in which an attribute of a digital paintbrush is adjustedbased on at least one stroke property of a stroke of the digitalpaintbrush.

FIG. 4 is an illustration depicting a representation of dynamicgeneration of a texture stamp of a digital paintbrush.

FIG. 5 is an illustration depicting an example representation ofrendered strokes of a digital paintbrush in response to receiving astroke pressure property.

FIG. 6 is an illustration depicting an example representation ofrendered strokes of a digital paintbrush in response to receiving astroke velocity property.

FIG. 7 is an illustration depicting an example representation ofrendered strokes of a digital paintbrush in response to receiving astroke direction property and an orientation associated with an inputdevice.

FIG. 8 illustrates an example system that includes an example computingdevice that is representative of one or more computing systems and/ordevices that may implement the various techniques described herein.

DETAILED DESCRIPTION

Overview

Digital painting is a type of content creation that simulates physicalpainting by rendering strokes of a virtual paintbrush in a userinterface. In some conventional systems, a computing device receives aninput describing a stroke path of an input device, and the computingdevice renders a digital paintbrush stroke by applying a stamp texturealong the stroke path. However, digital paintbrush strokes renderedusing these conventional techniques often appear unrealistic because thetechniques fail to reflect variables such as stroke pressure, strokedirection, paintbrush orientation, and interaction of bristles with apaint substrate such as a canvas. Conventional techniques also fail toreflect changes in these variables and are limited to rendering digitalpaintbrush strokes using a static stamp texture pattern. Although somesystems allow for optional “jittering” which randomly rotates and/orresizes the stamp texture pattern along the stroke path, theseconventional systems do not change the stamp texture pattern.

Another conventional approach to digital painting simulates individualbristles of a physical paintbrush such that each of the simulatedbristles interacts with virtual paint and a virtual canvas. A computingdevice can use information from this three-dimensional simulation torender digital paint brush strokes. Although individual bristlesimulation can reflect more variables than the conventional stamptexture rendering approach, this type of simulation is computationallyexpensive to the extent that it is not viable for most computingdevices. Even when used on computing devices with sufficient resourcesto support three-dimensional modeling, the individual bristle simulationsystems overwhelm computing system resources in many common usescenarios such as in response to fast paintbrush strokes. Thus, theseconventional systems often place a limit on paintbrush stroke speedwhich is frustrating and unnatural to users. Other shortcomings ofthree-dimensional modeling approaches include problems with consistencyand repeatability. For example, in conventional techniques, a user mayproduce a digital paint output in response to a specific set of inputs,but the user may not be able to reproduce the digital paint output evenin response to the same specific set of inputs. Individual bristlesimulation systems also have limited interoperability with other digitalpaint systems and require system-specific accessories such as inputdevices which are not compatible with other digital paint systems.

Systems and techniques are described for a dynamic stamp texture for adigital paintbrush. A computing device implements a digital paintbrushsystem which includes a channel weight module, a stamp compositionmodule, and a rendering module. The channel weight module is implementedto receive input data, e.g., from an input device, describing a strokeproperty of a stroke of a digital paintbrush such as a stroke pressure,a stroke velocity, a stroke direction, and an orientation of the inputdevice.

The digital paintbrush system determines a weight to apply to a textureimage channel based on the received stroke property of the stroke. Thetexture image channel represents an attribute of the digital paintbrushsuch as a normal, smooth, or rough version of a stamp texture of thedigital paintbrush. A magnitude of the weight defines a relativesignificance of the attribute based on the stroke property. Thus,changes in received input data can be reflected as changes in themagnitude of the weight, and the relative significance of the attributecan be changed dynamically based on the input data.

The channel weight module is implemented to apply the determined weightto the texture stamp channel, and the stamp composition module isimplemented to generate a texture stamp of the digital paintbrush bycombining the texture stamp channel with another texture stamp channelwhich represents another attribute of the digital paintbrush. In thismanner, the texture stamp of the digital paintbrush can be generateddynamically by combining weighted attributes of the digital paintbrushrepresented by the texture stamp channels where the weight applied toeach texture stamp channel defines a relative significance of theattribute represented by the texture stamp channel based on the receivedinput data.

The rendering module is implemented to render strokes of digital paintin a user interface of a display device using the generated texturestamp. The texture stamp is dynamically adjusted by adjusting themagnitude of the weight applied to the texture image channel in responseto receiving input data describing a change to the stroke property ordescribing another stroke property of the stroke of the digitalpaintbrush. As a result, the digital paintbrush system provides dynamicpaint simulation functionality based on received input data without thecomputational cost of three-dimensional paintbrush simulation.

In one example, the texture image channel can be implemented as an RGBchannel of a stamp texture image, and using existing RGB channels forthe texture image channels allows the systems and techniques describedto be implemented in existing digital painting systems. Thus, bychanging weights applied to RGB channels in real-time and dynamicallycombining the RGB channels as a texture stamp, the digital paintbrushsystem may be used to provide paint simulation functionality onlow-resource computing devices such as mobile devices. The describedsystems and techniques improve digital painting technology by changingthe texture stamp based on received input data in real-time, and usingthe dynamic texture stamp to render strokes of digital paint.Accordingly, the digital paintbrush system improves digital paintingtechnology by rendering realistic digital paint strokes consistently andwithout limits on user inputs such as stroke speed.

In the following discussion, an example environment is first describedthat may employ the techniques described herein. Example procedures arealso described which may be performed in the example environment as wellas other environments. Consequently, performance of the exampleprocedures is not limited to the example environment and the exampleenvironment is not limited to performance of the example procedures.

Example Environment

FIG. 1 is an illustration of an environment 100 in an exampleimplementation that is operable to employ digital systems and techniquesas described herein. The illustrated environment 100 includes acomputing device 102 connected to a network 104. The computing device102 may be configured as a desktop computer, a laptop computer, a mobiledevice (e.g., assuming a handheld configuration such as a tablet ormobile phone), and so forth. Thus, the computing device 102 may rangefrom a full resource device with substantial memory and processorresources (e.g., personal computers, game consoles) to a low-resourcedevice with limited memory and/or processing resources (e.g., mobiledevices). Additionally, the computing device 102 may be representativeof a plurality of different devices, such as multiple servers utilizedby a business to perform operations “over the cloud.”

The illustrated environment 100 also includes an input device 106 and adisplay device 108. The computing device 102, the input device 106, andthe display device 108 are communicatively coupled via a wired or awireless connection. For example, the input device 106 may receive aninput and communicate the input to the computing device 102 which mayprocess the input as data and render content associated with the inputin a user interface 110 of the display device 108. This content caninclude strokes 112 of digital paint corresponding to a virtualpaintbrush stroke input.

The computing device 102 includes a storage device 114 and a digitalpaintbrush module 116. The storage device is illustrated to includedigital content 118 such as strokes 112 of digital paint. The computingdevice implements 102 the digital paintbrush module 116 to receiveinputs from the input device 106. For example, a user may manipulate theinput device 106 and the digital paintbrush module 116 may receiveinputs corresponding to the manipulation of the input device 106. Thedigital paintbrush module 116 may process these inputs and cause thedisplay device 108 to display outputs in the user interface 110 thatcorrespond to the processed inputs.

The input device 106 is illustrated as having, receiving, and/ortransmitting input data 120. In one example, the input device 106 may bea device such as a touchscreen that has combined functionality of thedisplay device 108 and the input device 106. In another example, theinput device 106 can be a device such as a stylus, electronic pen, or amouse that receives the input data 120, e.g., from a user manipulation,and transmits input data 120, e.g., to the computing device 102. In oneembodiment, the input device 106 may include one or more sensorsconfigured to detect input data 120. In another embodiment, the inputdevice 106 can receive input data 120 detected by one or more sensorswhich can be included in the input device 106 or which can be remote tothe input device. For example, the input device 106 may be a stylus thatreceives input data 120 from a sensor of a stylus pad or from a sensorof the stylus. In another example, the input device 106 may receiveinput data 120 from one or more sensors via the network 104.

By way of example, the input data 120 can include any data that thedigital paintbrush module 116 may use to render strokes 112 of digitalpaint in the user interface 110. Thus, the input data 120 may includedata representative of a property of a brush, a property of a canvas, aproperty of paint, and/or a property representative of another physicalproperty. In this way, the digital paintbrush module 116 can process theinput data 120 to dynamically render strokes 112 of digital paint basedon the input data. For example, the input device 106 may be a stylus andthe input data 120 may include data describing an orientation of thestylus which the digital paintbrush module 116 can process to renderstrokes 112 of digital paint based on the orientation of the stylus.

Specifically, different orientations of a physical paintbrush producephysical paint strokes with different features such that a firstorientation of the physical paintbrush may produce physical paintstrokes having a first feature and a second orientation of the physicalpaintbrush may produce physical paint strokes having a second feature.Similarly, the digital paintbrush module 116 may receive input data 120to render strokes 112 of digital paint with different features based ondifferent orientations of the input device 106. In one example, theinput data 120 can include data received from the input device 106. Inanother example, the input data 120 can include data received fromanother source such as from a user. Thus, the digital paintbrush module116 may receive input data 120 including data describing a property ofpaint or a type of paint and the paintbrush module 116 can process thisdata to render strokes 112 of digital paint based on the paint propertyor type.

FIG. 2 depicts a system 200 in an example implementation showingoperation of a digital paintbrush module 116. The digital paintbrushmodule 116 is illustrated to include a channel weight module 202, astamp composition module 204, and a rendering module 206. The computingdevice 102 implements the digital paintbrush module 116 to receiveinputs, e.g., from the input device 106, and the digital paintbrushmodule 116 may receive these inputs directly or over the network 104.

The inputs are illustrated as input data 120 which can include brushdata 208, canvas data 210, paint data 212, and/or other data 214. Thebrush data 208 may include stroke data describing stroke properties of astroke of the input device 106 such as a stroke pressure, a strokevelocity, a stroke direction, and/or a stroke orientation. The canvasdata 210 may include data describing properties of a virtual canvas suchas canvas texture or canvas material, and the paint data 212 can includedata describing properties of virtual paint such as moisture content(wetness) or paint type. The other data 214 may include user preferencedata or any other data that may be processed to render strokes 112 ofdigital paint.

The channel weight module 202 is implemented to determine weights toapply to texture image channels based on inputs received from the inputdevice 106. For example, the channel weight module 202 may determine theweights to apply to the texture image channels based on the input data120, and the texture image channels can each represent an attribute of adigital paintbrush such as a normal, smooth, or rough version of a stamptexture of the digital paintbrush. In this way, the weights can define asignificance of the individual attribute represented by each textureimage channel based on the input data 120. Thus, the channel weightmodule 202 determines the weights to apply to the texture image channelsbased on the stroke property and applies the determined weights to thetexture image channels.

As shown in FIG. 2, the texture image channels with the applied weightsare represented as weighted normal channel data 216, weighted smoothchannel data 218, and weighted rough channel data 220. In particular,the channel weight module 202 generates the weighted normal channel data216, the weighted smooth channel data 216, and the weighted roughchannel data 220 dynamically and in response to receiving the input data120.

The stamp composition module 204 is implemented to generate a texturestamp of the digital paintbrush by combining the weighted texture imagechannels, and a rendering module 206 is implemented to render thegenerated texture stamp as digital paint in the user interface 110 ofthe display device 108. Thus, the stamp composition module 204 receivesthe weighted normal channel data 216, the weighted smooth channel data218, and the weighted rough channel data 220, and the stamp compositionmodule 204 generates a texture stamp in real-time based on the receivedweighted channel data. The generated texture stamp is represented bytexture stamp data 222 which is received by the rendering module 206.The rendering module 206 renders the received texture stamp data 222 asstrokes 112 of digital paint in the user interface 110.

Thus, by applying the weights to the texture image channels, a relativesignificance of the attributes represented by the texture image channelsis dynamically reflected in the generated texture stamp of the digitalpaintbrush. As the rendering module 206 uses the generated texture stampto render strokes 112 of digital paint in the user interface 110, therelative significance of the attributes represented by the texture imagechannels is also dynamically reflected in the rendered strokes 112 ofdigital paint. Unlike conventional systems which use a static stamptexture pattern to render digital paintbrush strokes, the systems andtechniques described use a dynamic stamp texture pattern that changes inreal-time based on received input data 120.

In general, functionality, features, and concepts described in relationto the examples above and below may be employed in the context of theexample procedures described in this section. Further, functionality,features, and concepts described in relation to different figures andexamples in this document may be interchanged among one another and arenot limited to implementation in the context of a particular figure orprocedure. Moreover, blocks associated with different representativeprocedures and corresponding figures herein may be applied togetherand/or combined in different ways. Thus, individual functionality,features, and concepts described in relation to different exampleenvironments, devices, components, figures, and procedures herein may beused in any suitable combinations and are not limited to the particularcombinations represented by the enumerated examples in this description.

Example Procedures

The following discussion describes techniques that may be implementedutilizing the previously described systems and devices. Aspects of eachof the procedures may be implemented in hardware, firmware, software, ora combination thereof. The procedures are shown as a set of blocks thatspecify operations performed by one or more devices and are notnecessarily limited to the orders shown for performing the operations bythe respective blocks. In portions of the following discussion,reference will be made to FIG. 1 and FIG. 2.

FIG. 3 is a flow diagram depicting a procedure 300 in an exampleimplementation in which an attribute of a digital paintbrush is adjustedbased on at least one stroke property of a stroke of the digitalpaintbrush. An input is received describing at least one stroke propertyof a stroke of a digital paintbrush (block 302). For example, thedigital paintbrush module 116 may receive input data 120 from the inputdevice 106 in response to a user's manipulation of the input device 106.The user's manipulation of the input device 106 may be similar to amanipulation of a physical paintbrush such as manipulating the inputdevice 106 in a stroking motion. Thus, the described systems andtechniques are intuitive to the user and do not require significanttraining as in conventional bristle simulation paint systems.

A weight is determined to apply to a texture image channel based on theat least one stroke property (block 304). In one or more embodiments,the channel weight module 202 may determine the weight to apply to thetexture image channel based on a feature of the at least one strokeproperty described in the input data 120, and the texture image channelrepresents an attribute of the digital paintbrush. In this way, asignificance of the attribute may be defined by a magnitude of theweight applied to the texture image channel, and this significance maybe determined by the channel weight module 202 based on the input data120.

The attribute is adjusted by applying the weight to the texture imagechannel (block 306). For example, the channel weight module 202 mayapply the weight to the texture image channel to adjust the significanceof the attribute based on the received input data 120 from the inputdevice 106. Specifically, the significance of the attribute can beadjusted dynamically as the input data 120 is received in real-timewithout imposing limits on inputs such as limiting stroke speed.

A texture stamp is generated of the digital paintbrush by combining thetexture image channel with at least one additional texture image channelrepresenting an additional attribute of the digital paintbrush (block308). In one example, the stamp composition module 204 may generate thetexture stamp as texture stamp data 222. Thus, the stamp compositionmodule 204 may generate the texture stamp data 222 by combining theweighted normal channel data 216, the weighted smooth channel data 218,and the weighted rough channel data 220. In one or more implementations,the stamp composition module 204 may dynamically generate the texturestamp data 222 by combining the texture image channels in real-time asthe input data 120 is received and as the significance of the attributeis adjusted by the channel weight module 202.

The stroke is rendered for display in a user interface using thegenerated texture stamp (310), and the applied weight defines asignificance of the attribute relative to the additional attribute ofthe digital paintbrush based on the received input from the input device106. For example, the rendering module 206 may receive the texture stampdata 222 and render the stroke 112 of digital paint based on thereceived texture stamp data 222.

Example Illustration

FIG. 4 is an illustration depicting a representation 400 of dynamicgeneration of a texture stamp of a digital paintbrush. Therepresentation 400 includes a first texture image channel 402representing a normal attribute of a brush stamp. A first weight 404 isapplied to the first texture image channel 402 meaning that the firstweight 404 defines a relative significance of the normal attribute ofthe brush stamp. The representation 400 also includes a second textureimage channel 406 representing a smooth attribute of the brush stamp. Asecond weight 408 is applied to the second texture image channel 406,and this second weight 408 defines a relative significance of the smoothattribute of the brush stamp, e.g., as compared to the normal attributeof the brush stamp. A third texture image channel 410 represents a roughattribute of the brush stamp, and a third weight 412 is applied to thethird texture image channel 410. The texture stamp 414 is generated bycombining the three texture image channels. In this way, the texturestamp 414 is generated as the weighted average of the three textureimage channels.

Thus, the digital paintbrush module 116 is implemented to render adigital paintbrush stroke using the texture stamp 414 which includes thecombined texture image channels. In one or more implementations, weights404, 408, and 412 are dynamically adjusted in response to received inputdata 120 describing one or more properties of the stroke. The texturestamp 414 can also be generated dynamically as the weights are adjustedin real-time. Accordingly, the digital paintbrush module 116 isimplemented to dynamically render the digital paintbrush stroke inreal-time and without imposing limitations on stroke inputs such as amaximum stoke speed.

Although the three texture image channels are described in terms ofrepresenting a normal, a smooth, and a rough version of a brush stamp,the systems and techniques described herein are not limited to suchrepresentations. For example, one or more of the texture image channelsor the weights applied to the texture image channels may be modified toprovide additional or alternative functionality. In one example, such amodification may be employed to simulate properties of physical paintsuch as paint wetness or paint viscosity. In another example, suchmodification may be employed to simulate properties of a physical canvassuch as canvas texture or canvas porosity. Furthermore, the systems andtechniques described are not limited to representations or simulationsof features of physical painting. Thus, the texture image channels orthe weights applied to the channels may be modified to provide arbitraryor artistic functionality. In this way, the described systems andtechniques improve digital painting technology by enabling customizationof the dynamic texture stamp 414. Unlike conventional systems which arelimited to a static stamp texture pattern or individual bristlesimulation, the techniques described herein are both robust and flexibleand can be modified to provide augmented or additional functionality.

In one example, the three texture image channels may be RGB channelswhere each of the RGB channels represents a principal aspect of thetexture stamp 414. For example, the first texture image channel 402 maybe a red RGB channel, the second texture image channel 406 may be agreen RGB channel, and the third texture image channel 410 may be a blueRGB channel In this way, the systems and techniques described herein maybe implemented to provide paint simulation functionality without thecomputational cost of three-dimensional paintbrush simulation.Additionally, using existing RGB channels for the texture image channelsallows the systems and techniques described to be implemented inexisting digital painting systems without requiring significantmodification of the existing digital painting systems. Thus, unlikeconventional bristle simulation digital paint systems which have limitedinteroperability with other systems, the described techniques utilizeexisting RGB channels to provide dynamic digital paint simulationfunctionality which is compatible with existing digital paint systems.

FIG. 5 is an illustration depicting an example representation 500 ofrendered strokes of a digital paintbrush in response to receiving astroke pressure property. In this example, weights 404, 408, and 412 maybe defined and dynamically adjusted accordingly:

N=0.5

S=0.1

R=p_(i)

where: N is the first weight 404 that is applied to the first textureimage channel 402 which represents a normal attribute of a paintbrushstroke; S is the second weight 408 that is applied to the second textureimage channel 406 which represents a smooth attribute of the paintbrushstroke; R is the third weight 412 that is applied to the third textureimage channel 410 which represents a rough attribute of the paintbrushstroke; and p_(i) is a stroke pressure property which is received fromthe input device 106. For example, the input device 106 may include oneor more sensors that may detect a force applied to a portion of theinput device 106 and p_(i) can reflect a magnitude of this force.

When a pressure is applied to a physical paintbrush, the appliedpressure tends to cause the bristles to split apart. In other words, aconventional paintbrush typically includes a handle to manipulate thebrush, bristles to transfer paint or ink from a container or palette toa canvas or substrate, and a mechanism for attaching the bristles to thehandle such as a ferrule or a crimp. As the bristles are pressed againstthe canvas or substrate, the bristles deform laterally relative to thecanvas or substrate which causes the bristles to separate or splitapart.

To reflect this bristle splitting feature, a greater weight is appliedto the third texture image channel 410 which represents the roughattribute of the paintbrush stroke. As shown in FIG. 5, stroke rendering502 and stroke rendering 504 are example renderings in response toapplying relatively high pressure to the input device 106. In contrast,stroke rendering 506 and stroke rendering 508 are example renderings inresponse to applying a relatively low pressure to the input device 106.Additionally, stroke rendering 510 is an example rendering of apaintbrush stroke in response to a variable pressure applied to theinput device 106. As shown in FIG. 5, the pressure applied to the inputdevice 106 transitions from a relatively low pressure to a relativelyhigh pressure which is illustrated by an increase in the rough attributein the stroke rendering 510.

FIG. 6 is an illustration depicting an example representation 600 ofrendered strokes of a digital paintbrush in response to receiving astroke velocity property. In this example, weights 404, 408, and 412 maybe defined and dynamically adjusted accordingly:

N=0.5

S=1.0−scale*[V]

R=scale*[V]

where: N is the first weight 404 that is applied to the first textureimage channel 402 which represents the normal attribute of a paintbrushstroke; S is the second weight 408 that is applied to the second textureimage channel 406 which represents the smooth attribute of thepaintbrush stroke; R is the third weight 412 that is applied to thethird texture image channel 410 which represents the rough attribute ofthe paintbrush stroke; and V is a two-dimensional vector denoting astroke velocity at a stamping point which is received from the inputdevice 106. For example, the input device 106 may include one or moresensors that may detect a velocity of the input device 106.

When a velocity is applied to a physical paintbrush, a faster stroketends to be rougher and a slower stroke tends to be smoother. To reflectthis velocity feature, a greater weight is applied to the third textureimage channel 410 and a smaller weight is applied the second textureimage channel 406 when a high velocity is applied to the input device106, and a smaller weight is applied to the third texture image channel410 and a greater weight is applied the second texture image channel 406when a low velocity is applied to the input device 106. As shown in FIG.6, stroke rendering 602 is an example rendering of a relatively fastpaintbrush stroke and stroke rendering 604 is an example rendering of arelatively slow paintbrush stroke.

FIG. 7 is an illustration depicting an example representation 700 ofrendered strokes of a digital paintbrush in response to receiving astroke direction property and an orientation associated with an inputdevice. In this example, weights 404, 408, and 412 may be defined anddynamically adjusted accordingly:

N=0.5

S=scale*(1.0+dot(V, T))

R=1.0−scale*(1.0+dot(V, T))

T=(tiltX, tiltY)

where: N is the first weight 404 that is applied to the first textureimage channel 402 which represents a normal attribute of a paintbrushstroke; S is the second weight 408 that is applied to the second textureimage channel 406 which represents the smooth attribute of thepaintbrush stroke; R is the third weight 412 that is applied to thethird texture image channel 410 which represents the rough attribute ofthe paintbrush stroke; V is a two-dimensional vector denoting a strokevelocity at a stamping point which is received from the input device106; tiltX describes an orientation of the input device 106 relative toan x-axis at the stamping point; and tiltY describes an orientation ofthe input device 106 relative to a y-axis at the stamping point. Forexample, the input device 106 may include one or more sensors that maydetect a velocity of the input device 106 and an orientation of theinput device 106.

When a physical paintbrush is tilted, a stroke of the tilted paintbrushalong a natural direction of its bristles tends to be smoother and astroke against the natural bristle direction tends to be rougher due tobristle splitting. Additionally, as discussed above, a faster stroke isgenerally rougher in appearance and a slower stroke is generallysmoother in appearance. To reflect this tilting feature, a greaterweight is applied to the third texture image channel 410 and a lowerweight is applied to the second texture image channel 406 when anorientation of the input device 106 and a stroke direction is against adirection of virtual bristles to produce a rougher appearing stroke.Additionally, a lower weight is applied to the third texture imagechannel 410 and a greater weight is applied to the second texture imagechannel 406 when an orientation of the input device 106 and a strokedirection is with a direction of virtual bristles to produce a smootherappearing stroke. As shown in FIG. 7, stroke rendering 702 is an examplerendering of a stroke in a direction that is not with or against virtualbristles meaning that the input device 106 is normal to a virtualcanvas. Stroke rendering 704 is an example rendering of a stroke in adirection that is with a natural direction of the virtual bristles andstroke rendering 706 is an example rendering of a stroke in a directionthat is against the natural direction of the virtual bristles. Thus asillustrated in FIG. 7, stroke rendering 704 is smoother in appearancethan stroke rendering 702 and stroke rendering 706 is rougher inappearance than stroke rendering 702.

Example System and Device

FIG. 8 illustrates an example system 800 that includes an examplecomputing device that is representative of one or more computing systemsand/or devices that may implement the various techniques describedherein. This is illustrated through inclusion of the digital paintbrushmodule 116. The computing device 802 may be, for example, a server of aservice provider, a device associated with a client (e.g., a clientdevice), an on-chip system, and/or any other suitable computing deviceor computing system.

The example computing device 802 as illustrated includes a processingsystem 804, one or more computer-readable media 806, and one or more I/Ointerfaces 808 that are communicatively coupled, one to another.Although not shown, the computing device 802 may further include asystem bus or other data and command transfer system that couples thevarious components, one to another. A system bus can include any one orcombination of different bus structures, such as a memory bus or memorycontroller, a peripheral bus, a universal serial bus, and/or a processoror local bus that utilizes any of a variety of bus architectures. Avariety of other examples are also contemplated, such as control anddata lines.

The processing system 804 is representative of functionality to performone or more operations using hardware. Accordingly, the processingsystem 804 is illustrated as including hardware elements 810 that may beconfigured as processors, functional blocks, and so forth. This mayinclude implementation in hardware as an application specific integratedcircuit or other logic device formed using one or more semiconductors.The hardware elements 810 are not limited by the materials from whichthey are formed or the processing mechanisms employed therein. Forexample, processors may be comprised of semiconductor(s) and/ortransistors (e.g., electronic integrated circuits (ICs)). In such acontext, processor-executable instructions may beelectronically-executable instructions.

The computer-readable storage media 806 is illustrated as includingmemory/storage 812. The memory/storage 812 represents memory/storagecapacity associated with one or more computer-readable media. Thememory/storage component 812 may include volatile media (such as randomaccess memory (RAM)) and/or nonvolatile media (such as read only memory(ROM), Flash memory, optical disks, magnetic disks, and so forth). Thememory/storage component 812 may include fixed media (e.g., RAM, ROM, afixed hard drive, and so on) as well as removable media (e.g., Flashmemory, a removable hard drive, an optical disc, and so forth). Thecomputer-readable media 806 may be configured in a variety of other waysas further described below.

Input/output interface(s) 808 are representative of functionality toallow a user to enter commands and information to computing device 802,and also allow information to be presented to the user and/or othercomponents or devices using various input/output devices. Examples ofinput devices include a keyboard, a cursor control device (e.g., amouse), a microphone, a scanner, touch functionality (e.g., capacitiveor other sensors that are configured to detect physical touch), a camera(e.g., which may employ visible or non-visible wavelengths such asinfrared frequencies to recognize movement as gestures that do notinvolve touch), and so forth. Examples of output devices include adisplay device (e.g., a monitor or projector), speakers, a printer, anetwork card, tactile-response device, and so forth. Thus, the computingdevice 802 may be configured in a variety of ways as further describedbelow to support user interaction.

Various techniques may be described herein in the general context ofsoftware, hardware elements, or program modules. Generally, such modulesinclude routines, programs, objects, elements, components, datastructures, and so forth that perform particular tasks or implementparticular abstract data types. The terms “module,” “functionality,” and“component” as used herein generally represent software, firmware,hardware, or a combination thereof. The features of the techniquesdescribed herein are platform-independent, meaning that the techniquesmay be implemented on a variety of commercial computing platforms havinga variety of processors.

An implementation of the described modules and techniques may be storedon or transmitted across some form of computer-readable media. Thecomputer-readable media may include a variety of media that may beaccessed by the computing device 802. By way of example, and notlimitation, computer-readable media may include “computer-readablestorage media” and “computer-readable signal media.”

“Computer-readable storage media” may refer to media and/or devices thatenable persistent and/or non-transitory storage of information incontrast to mere signal transmission, carrier waves, or signals per se.Thus, computer-readable storage media refers to non-signal bearingmedia. The computer-readable storage media includes hardware such asvolatile and non-volatile, removable and non-removable media and/orstorage devices implemented in a method or technology suitable forstorage of information such as computer readable instructions, datastructures, program modules, logic elements/circuits, or other data.Examples of computer-readable storage media may include, but are notlimited to, RAM, ROM, EEPROM, flash memory or other memory technology,CD-ROM, digital versatile disks (DVD) or other optical storage, harddisks, magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or other storage device, tangible media, orarticle of manufacture suitable to store the desired information andwhich may be accessed by a computer.

“Computer-readable signal media” may refer to a signal-bearing mediumthat is configured to transmit instructions to the hardware of thecomputing device 802, such as via a network. Signal media typically mayembody computer readable instructions, data structures, program modules,or other data in a modulated data signal, such as carrier waves, datasignals, or other transport mechanism. Signal media also include anyinformation delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media include wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared, and other wireless media.

As previously described, hardware elements 810 and computer-readablemedia 806 are representative of modules, programmable device logicand/or fixed device logic implemented in a hardware form that may beemployed in some embodiments to implement at least some aspects of thetechniques described herein, such as to perform one or moreinstructions. Hardware may include components of an integrated circuitor on-chip system, an application-specific integrated circuit (ASIC), afield-programmable gate array (FPGA), a complex programmable logicdevice (CPLD), and other implementations in silicon or other hardware.In this context, hardware may operate as a processing device thatperforms program tasks defined by instructions and/or logic embodied bythe hardware as well as a hardware utilized to store instructions forexecution, e.g., the computer-readable storage media describedpreviously.

Combinations of the foregoing may also be employed to implement varioustechniques described herein. Accordingly, software, hardware, orexecutable modules may be implemented as one or more instructions and/orlogic embodied on some form of computer-readable storage media and/or byone or more hardware elements 810. The computing device 802 may beconfigured to implement particular instructions and/or functionscorresponding to the software and/or hardware modules. Accordingly,implementation of a module that is executable by the computing device802 as software may be achieved at least partially in hardware, e.g.,through use of computer-readable storage media and/or hardware elements810 of the processing system 804. The instructions and/or functions maybe executable/operable by one or more articles of manufacture (forexample, one or more computing devices 802 and/or processing systems804) to implement techniques, modules, and examples described herein.

The techniques described herein may be supported by variousconfigurations of the computing device 802 and are not limited to thespecific examples of the techniques described herein. This functionalitymay also be implemented all or in part through use of a distributedsystem, such as over a “cloud” 814 as described below.

The cloud 814 includes and/or is representative of a platform 816 forresources 818. The platform 816 abstracts underlying functionality ofhardware (e.g., servers) and software resources of the cloud 814. Theresources 818 may include applications and/or data that can be utilizedwhile computer processing is executed on servers that are remote fromthe computing device 802. Resources 818 can also include servicesprovided over the Internet and/or through a subscriber network, such asa cellular or Wi-Fi network.

The platform 816 may abstract resources 818 and functions to connect thecomputing device 802 with other computing devices. The platform may alsoserve to abstract scaling of resources to provide a corresponding levelof scale to encountered demand for the resources that are implementedvia the platform. Accordingly, in an interconnected device embodiment,implementation of functionality described herein may be distributedthroughout the system 800. For example, the functionality may beimplemented in part on the computing device 802 as well as via theplatform 816 that abstracts the functionality of the cloud 814.

Conclusion

Although the implementation of dynamic texture for a digital paintbrushhave been described in language specific to structural features and/ormethods, it is to be understood that the appended claims are notnecessarily limited to the specific features or methods described.Rather, the specific features and methods are disclosed as exampleimplementations of dynamic texture for a digital paintbrush, and otherequivalent features and methods are intended to be within the scope ofthe appended claims. Further, various different examples are describedand it is to be appreciated that each described example can beimplemented independently or in connection with one or more otherdescribed examples.

1. In a digital medium environment to dynamically adjust texture of adigital paintbrush, a method implemented by at least one computingdevice, the method comprising: receiving, by the at least one computingdevice, an input describing at least one stroke property of a stroke ofthe digital paintbrush; determining, by the at least one computingdevice, a weight to apply to at least one RGB channel based on the atleast one stroke property, the at least one RGB channel representing anattribute of the digital paintbrush; dynamically adjusting, by the atleast one computing device, the attribute of the digital paintbrush byapplying the weight to the at least one RGB channel; generating, by theat least one computing device, a texture stamp of the digital paintbrushby combining the at least one RGB channel with at least one additionalRGB channel representing an additional attribute of the digitalpaintbrush; and rendering, by the at least one computing device, thestroke for display in a user interface using the generated texturestamp.
 2. The method as described in claim 1, wherein the at least onestroke property is one of a stroke pressure or an orientation associatedwith a user input.
 3. The method as described in claim 2, wherein theorientation associated with the user input is an orientation of astylus.
 4. (canceled)
 5. The method as described in claim 1, furthercomprising: determining an additional weight to apply to the at leastone additional RGB channel; and dynamically adjusting the additionalattribute of the digital paintbrush by applying the additional weight tothe at least one additional RGB channel.
 6. The method as described inclaim 1, wherein the attribute is one of normal, smooth, or rough. 7.The method as described in claim 1, wherein the weight defines asignificance of the attribute relative to the additional attribute inthe generated texture stamp based on the at least one stroke property ofthe stroke.
 8. In a digital medium environment to dynamically adjusttexture of a digital paintbrush, modules implemented at least partiallyin hardware of one or more computing devices of a system comprising: achannel weight module implemented to: determine weights to apply to RGBchannels based on an input describing at least one stroke property of astroke of the digital paintbrush, the RGB channels each representing anattribute of the digital paintbrush; and adjust a significance of eachof the attributes based on the at least one stroke property by applyingthe determined weights to the RGB channels; and a stamp compositionmodule implemented to generate a texture stamp of the digital paintbrushby combining the RGB channels.
 9. The system as described in claim 8,wherein the at least one stroke property is one of a stroke pressure oran orientation associated with a user input.
 10. The system as describedin claim 9, wherein the orientation associated with the user input is anorientation of a stylus.
 11. (canceled)
 12. The system as described inclaim 8, further comprising a rendering module implemented to render thestroke for display in a user interface using the generated texturestamp. 13-20. (canceled)
 21. One or more computer-readable storage mediacomprising instructions stored thereon that, responsive to execution bya computing device in a digital medium environment to dynamically adjusttexture of a digital paintbrush, cause operations of the computingdevice including: receiving an input describing at least one strokeproperty of a stroke of the digital paintbrush; determining a weight toapply to at least one RGB channel based on the at least one strokeproperty, the at least one RGB channel representing an attribute of thedigital paintbrush; dynamically adjusting the attribute of the digitalpaintbrush by applying the weight to the at least one RGB channel; andgenerating a texture stamp of the digital paintbrush by combining the atleast one RGB channel with at least one additional RGB channelrepresenting an additional attribute of the digital paintbrush.
 22. Theone or more computer-readable storage media as described in claim 21,wherein the at least one stroke property is one of a stroke pressure oran orientation associated with a user input.
 23. The one or morecomputer-readable storage media as described in claim 22, wherein theorientation associated with the user input is an orientation of astylus.
 24. The one or more computer-readable storage media as describedin claim 21, wherein the at least one stroke property is one of a strokevelocity or a stroke direction.
 25. The one or more computer-readablestorage media as described in claim 21, the operations furtherincluding: determining an additional weight to apply to the at least oneadditional RGB channel; and dynamically adjusting the additionalattribute of the digital paintbrush by applying the additional weight tothe at least one additional RGB channel.
 26. The one or morecomputer-readable storage media as described in claim 21, the operationsfurther including rendering the stroke for display in a user interfaceusing the generated texture stamp.
 27. The one or more computer-readablestorage media as described in claim 21, wherein the attribute is one ofnormal, smooth, or rough.
 28. The one or more computer-readable storagemedia as described in claim 21, wherein the weight defines asignificance of the attribute relative to the additional attribute inthe texture stamp based on the at least one stroke property of thestroke.
 29. The method as described in claim 5, wherein the at least onestroke property is a stroke velocity and the weight and the additionalweight are both determined based on the stroke velocity.
 30. The systemas described in claim 8, wherein the at least one stroke property is oneof a stroke velocity or a stroke direction.